import 'package:flutter/foundation.dart';
import 'todo.dart' show Todo;

class TodoList with ChangeNotifier {
  // 用于保存所有todo
  final Map<String, Todo> _list = <String, Todo>{};

  TodoList() {
    _list['1'] = Todo(task: '测试任务1', complete: false, id: '1');
    _list['2'] = Todo(task: '测试任务2', complete: false, id: '2');
    _list['3'] = Todo(task: '测试任务3', complete: false, id: '3');
    _list['4'] = Todo(task: '测试任务4', complete: false, id: '4');
    _list['5'] = Todo(task: '测试任务5', complete: false, id: '5');
  }

  // 私有变量的getter
  Map<String, Todo> get list => _list;

  // 添加todo
  void add(Todo todo) {
    _list[todo.id] = todo;
    // 通知组件状态改变
    notifyListeners();
  }

  // 删除todo
  void remove(String id) {
    _list.remove(id);
    notifyListeners();
  }

  // 改变todo状态
  void statusChange(Todo todo) {
    todo.complete = !todo.complete;
    _list.update(todo.id, (value) => todo);
    notifyListeners();
  }

  Todo? getById(String? id) {
    return _list[id];
  }
}
